home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / MATH / MATH1 / TRAP1.PAS < prev    next >
Pascal/Delphi Source File  |  1985-04-03  |  1KB  |  55 lines

  1. program trap1;        { -> 264 }
  2. { integration by the trapezoidal rule }
  3.  
  4. var    done        : boolean;
  5.     sum,upper,lower    : real;
  6.     pieces        : integer;
  7.  
  8. function fx(x: real): real;
  9. { find f(x)=1/x }
  10. { watch out for x=0 ! }
  11. begin
  12.   fx:=1.0/x
  13. end;
  14.  
  15. procedure trapez(lower,upper    : real;
  16.          pieces        : integer;
  17.         var sum        : real);
  18. { numerical integration by the trapezoid method }
  19. { function is FX, limits are LOWER and UPPER }
  20. { with number of regions equal to PIECES }
  21. { fixed partition is DELTA_X, answer is SUM }
  22.  
  23. var    i            : integer;
  24.     x,delta_x,esum,psum    : real;
  25. begin
  26.   delta_x:=(upper-lower)/pieces;
  27.   esum:=fx(lower)+fx(upper);
  28.   psum:=0.0;
  29.  
  30.   for i:=1 to pieces do
  31.     begin
  32.       x:=lower+i*delta_x;
  33.       psum:=psum+fx(x)
  34.     end;
  35.   sum:=(esum+2.0*psum)*delta_x*0.5
  36. end;        { TRAPEZ }
  37.  
  38. begin        { main program }
  39.   done:=false;
  40.   lower:=1.0;
  41.   upper:=9.0;
  42.   writeln;
  43.   repeat
  44.     write('How many sections? ');
  45.     readln(pieces);
  46.     if pieces<0 then done:=true
  47.  
  48.     else
  49.       begin
  50.     trapez(lower,upper,pieces,sum);
  51.     writeln('area=',sum)
  52.       end
  53.   until done
  54. end.
  55.